Clock signals are used in virtually every IC and electronic system to control timing. For example, every time there is a rising edge on a clock signal, all the flip-flops in a circuit may change state. Clearly, clocks are often heavily loaded signals, and may be bussed throughout a very large IC. Even with specially-designed global buffers, there is typically a delay between the clock edge received by the IC at the pad, and the clock edge received by the last-served flip-flop on the IC (i.e., between the "input clock signal" and the "destination clock signal"). This delay, designated herein as t.sub.d, may cause difficulties in interfacing between ICs, or simply slow down the overall system speed. Input data may be provided in synchronization with the input clock signal, while output data is typically provided in synchronization with the destination clock signal. Further, t.sub.d often varies not only between different ICs, but on a single IC with temperature and voltage as well. It is highly desirable to have a circuit and method for synchronizing a destination clock signal with an input clock signal, so that the destination clock signals of various ICs can be commonly synchronized by synchronizing each destination clock signal to a common input clock signal.
This clock synchronization procedure is often performed using a phase-lock loop (PLL) or delay-lock loop (DLL). However, known PLLs and DLLs consume a great deal of silicon area. Additionally, PLLs are often analog in nature and take an extremely long time to simulate, and a design that works in one manufacturing process may stop working when manufactured using another process. Further, analog PLLS can be particularly sensitive to radiation. Therefore, PLLS are very difficult to design, and often are not feasible in a given circuit or system. Known DLLS are also very complicated and difficult to design. Further, known DLLs require many input clock cycles to "lock", i.e., to synchronize a destination clock signal to an input clock signal. As described below, known DLLs also typically run continuously during the entire time the two clock signals must be synchronized, frequently adjusting the destination clock signal to keep it properly synchronized. This constant adjustment not only requires a large and complicated state machine, it also injects a lot of noise into the clock network. Because a noisy clock signal can cause enormous problems in a sensitive IC circuit, a large stabilizing capacitor is often required between the positive power supply (VDD) and the zero voltage level (ground). For one or more of these reasons, clock synchronization is often not feasible using known circuits and methods.
Therefore, it is desirable to provide a delay-lock loop circuit and method using a fairly simple circuit that consumes a relatively small amount of silicon area and locks in a few clock cycles.